Skip to content

chore(release): v0.8.0 - #104

Open
liblaf-release-please[bot] wants to merge 2 commits into
mainfrom
release-please/main
Open

chore(release): v0.8.0#104
liblaf-release-please[bot] wants to merge 2 commits into
mainfrom
release-please/main

Conversation

@liblaf-release-please

@liblaf-release-please liblaf-release-please Bot commented May 18, 2026

Copy link
Copy Markdown

v0.8.0 - 2026-08-31

💥 BREAKING CHANGES

  • Refactored warp elastic energy module structure - e2fffdc by @liblaf
  • remove the previous model, inverse, optim, scene, utils, consts, jax.model, and warp.energies APIs; use the new forward, collision, common, and warp.fem modules instead - e52b195 by @liblaf
  • remove the liblaf.apple.jax package and JAX-based forward/collision APIs in favor of Torch tensors and Warp material adapters. - 67dbecb by @liblaf

✨ Features

  • (apple) improve inverse simulation with coarse-to-fine transfer and enhanced solvers - 61d530e by @liblaf
  • (apple) implement hybrid JAX/Warp model framework and WarpPhaceV2 - 6d1ae34 by @liblaf
  • (apple) add SMAS support and volume fraction for elastic energies - 79a6c2d by @liblaf
  • (exp) update inverse-toy simulation and add Newton solver - cee4852 by @liblaf
  • (exp) add SMAS forward simulation experiments - 90f086c by @liblaf
  • (exp) add inverse activation experiments for face and toy cases - abaf2e3 by @liblaf
  • (exp) compare belly losses on unreachable targets - a538dd3 by @liblaf
  • (exp) diagnose unreachable-target inverse bumpiness - 93b0953 by @liblaf
  • (experiment) validate fat attenuation of bumpy activation - 77721e8 by @liblaf
  • (inverse) enhance inverse solver with constraint support and improved adjoint solver - 892dbfd by @liblaf
  • (smas) add stable neo-hookean simulation experiments - 5d1ae88 by @liblaf
  • (warp) add Koiter shell potential - ae2f318 by @liblaf
  • add inverse toy experiments for forward simulation and muscle activation - 00ba035 by @liblaf
  • [breaking] refactor elastic energies and add inverse physics module - e2fffdc by @liblaf
  • add Neo-Hookean Warp energies and line-search PNCG - 88a29ef by @liblaf
  • add staged PNCG continuation for forward solves - c5f5267 by @liblaf
  • [breaking] add Torch differentiable inverse simulations - 67dbecb by @liblaf

🐛 Bug Fixes

  • (inverse-face) split muscle and SMAS material fractions - 51e6274 by @liblaf
  • (warp) correct ARAP muscle energy implementation and kernel function names - d734e9b by @liblaf
  • align activation shear component ordering - a353c93 by @liblaf

📝 Documentation

🎨 Styles

  • collapse multi-line return expressions to single line - acf52bc by @liblaf

♻️ Code Refactoring

  • [breaking] replace model stack with forward simulation API - e52b195 by @liblaf

❤️ Contributors

@liblaf-release-please liblaf-release-please Bot added automerge Merge the pull request once unit tests and other checks pass. release-please labels May 18, 2026
@liblaf-mega-linter

liblaf-mega-linter Bot commented May 18, 2026

Copy link
Copy Markdown

⚠️MegaLinter analysis: Success with warnings

Descriptor Linter Files Fixed Errors Max errors Warnings Elapsed time
✅ BASH shellcheck 2 0 0 0.03s
✅ BASH shfmt 2 0 0 0 0.22s
⚠️ COPYPASTE jscpd yes 1241 no 7.73s
⚠️ JSON jsonlint 250 1 0 0.33s
✅ JSON prettier 250 230 0 0 14.14s
✅ JSON v8r 250 0 0 21.02s
⚠️ MARKDOWN rumdl 139 7 1 0 0.59s
⚠️ PYTHON ruff yes yes 424 no 2.24s
✅ PYTHON ruff-format yes yes no no 0.32s
✅ REPOSITORY git_diff yes no no 1.27s
⚠️ SPELL cspell 728 993 0 24.14s

Detailed Issues

⚠️ SPELL / cspell - 993 errors
rc/15-analyze-stable-neo-hookean-resolution.py:454:45    - Unknown word (toarray)    -- -factor.solve(mixed.toarray())
	 Suggestions: [tarry, torbay, Torbay, asarray, ndarray]
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/15-analyze-stable-neo-hookean-resolution.py:466:28    - Unknown word (lstsq)      -- projection = np.linalg.lstsq(response, target, rcond
	 Suggestions: [lats, lets, lits, lots, lstm]
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/15-analyze-stable-neo-hookean-resolution.py:466:52    - Unknown word (rcond)      -- lstsq(response, target, rcond=relative_tolerance)
	 Suggestions: [cond, cron, crone, cronk, crons]
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/15-analyze-stable-neo-hookean-resolution.py:566:16    - Unknown word (genfromtxt) -- np.genfromtxt(case.case_dir / "top
	 Suggestions: []
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/15-analyze-stable-neo-hookean-resolution.py:574:16    - Unknown word (genfromtxt) -- np.genfromtxt(case.case_dir / "top
	 Suggestions: []
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/15-analyze-stable-neo-hookean-resolution.py:758:137   - Unknown word (Ainv)       -- positive-definite symmetric Ainv on every muscle triangle
	 Suggestions: [ainu, Ainu, ain, Ain, Minv]
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/25-render-stable-neo-hookean-resolution-analysis-paraview.py:4:34      - Unknown word (pvpython)   -- with ParaView 6.1.1's pvpython, not the project interpreter
	 Suggestions: [python, Python, cpython, ipython, PYTHON]
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/25-render-stable-neo-hookean-resolution-analysis-paraview.py:67:65     - Unknown word (IHDR)       -- or header[12:16] != b"IHDR":
	 Suggestions: [DHDR, XHDR, hide, HIDE, HIDER]
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/25-render-stable-neo-hookean-resolution-analysis-paraview.py:129:18    - Unknown word (ainv)       -- "min_det_ainv",
	 Suggestions: [ainu, Ainu, ain, minv, Ain]
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/25-render-stable-neo-hookean-resolution-analysis-paraview.py:152:66    - Unknown word (ainv)       -- min_det_g", "min_det_ainv")
	 Suggestions: [ainu, Ainu, ain, minv, Ain]
exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/25-render-stable-neo-hookean-resolution-analysis-paraview.py:392:56    - Unknown word (unregularized) -- singular-value spectra (unregularized free-control map)",
	 Suggestions: [unregulated]
src/liblaf/apple/inverse/_diff_forward.py:92:9      - Unknown word (rprecondition) -- def rprecondition(self, p_free: Free)
	 Suggestions: [precondition, preCondition, PRECONDITION, recondition, rpreconditioner]
src/liblaf/apple/inverse/_diff_forward.py:99:21     - Unknown word (rprecondition) -- return self.rprecondition(p_free)
	 Suggestions: [precondition, preCondition, PRECONDITION, recondition, rpreconditioner]
src/liblaf/apple/warp/fem/__init__.pyi:4:8       - Unknown word (koiter)     -- from ._koiter import Koiter
	 Suggestions: [kiter, goiter, loiter, dotier, goitre]
src/liblaf/apple/warp/fem/__init__.pyi:4:22      - Unknown word (Koiter)     -- from ._koiter import Koiter
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
src/liblaf/apple/warp/fem/__init__.pyi:11:6      - Unknown word (Koiter)     -- "Koiter",
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
src/liblaf/apple/warp/fem/_koiter.py:349:16    - Unknown word (Koiter)     -- msg = "Koiter triangle rest metric
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
src/liblaf/apple/warp/fem/_koiter.py:381:7     - Unknown word (Koiter)     -- class Koiter(WarpPotential):
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
src/liblaf/apple/warp/fem/_koiter.py:382:64    - Unknown word (Lamé)       -- supplied effective in-plane Lamé moduli.
	 Suggestions: [Lame, Lama, lamb, Lamb, Lamp]
src/liblaf/apple/warp/fem/_koiter.py:455:19    - Unknown word (Koiter)     -- f"Koiter expects triangle cells
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
tests/warp/test_koiter.py:136:10    - Unknown word (koiter)     -- def test_koiter_activation_conversion
	 Suggestions: [kiter, goiter, loiter, dotier, goitre]
tests/warp/test_koiter.py:138:39    - Unknown word (Koiter)     -- apple.warp.fem import Koiter
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
tests/warp/test_koiter.py:143:14    - Unknown word (Koiter)     -- direct = Koiter.from_pyvista(_make_mesh
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
tests/warp/test_koiter.py:144:17    - Unknown word (Koiter)     -- converted = Koiter.from_pyvista(_make_mesh
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
tests/warp/test_koiter.py:154:10    - Unknown word (koiter)     -- def test_koiter_zero_activation_has
	 Suggestions: [kiter, goiter, loiter, dotier, goitre]
tests/warp/test_koiter.py:156:39    - Unknown word (Koiter)     -- apple.warp.fem import Koiter
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
tests/warp/test_koiter.py:163:17    - Unknown word (Koiter)     -- potential = Koiter.from_pyvista(mesh, thickness
	 Suggestions: [Kiter, Goiter, Loiter, Dotier, Goitre]
tests/warp/test_koiter.py:174:10    - Unknown word (koiter)     -- def test_koiter_homogeneous_patch_matches
	 Suggestions: [kiter, goiter, loiter, dotier, goitre]
tests/warp/test_koiter.py:208:10    - Unknown word (koiter)     -- def test_koiter_prestrain_patch_has
	 Suggestions: [kiter, goiter, loiter, dotier, goitre]
tests/warp/test_koiter.py:239:10    - Unknown word (koiter)     -- def test_koiter_prestrain_keeps_original
	 Suggestions: [kiter, goiter, loiter, dotier, goitre]
CSpell: Files checked: 559, skipped: 169, Issues found: 993 in 191 files.


You can skip this misspellings by defining the following .cspell.json file at the root of your repository
Of course, please correct real typos before :)

{
    "version": "0.2",
    "language": "en",
    "ignorePaths": [
        "**/node_modules/**",
        "**/vscode-extension/**",
        "**/.git/**",
        "**/.pnpm-lock.json",
        ".vscode",
        "package-lock.json",
        "megalinter-reports"
    ],
    "words": [
        "Ainv",
        "Armijo",
        "Cupy",
        "Eboundary",
        "Efat",
        "Eint",
        "Emin",
        "Esmas",
        "Exponentiating",
        "Freudenthal",
        "IHDR",
        "KOITER",
        "Koiter",
        "Lam\u00e9",
        "Lres",
        "Nyquist",
        "O\u00f1ate",
        "PVBATCH",
        "RGBA",
        "Tikhonov",
        "Unreachability",
        "VTKHDF",
        "Viridis",
        "ainv",
        "atol",
        "axvline",
        "bbox",
        "bmatrix",
        "clim",
        "cmap",
        "cupy",
        "efat",
        "eigen",
        "eigenstrain",
        "evals",
        "ffprobe",
        "fftfreq",
        "frameon",
        "genfromtxt",
        "hanning",
        "imshow",
        "infty",
        "injective",
        "interp",
        "isface",
        "isfixed",
        "issubdtype",
        "koiter",
        "libx",
        "linf",
        "lstsq",
        "mathrm",
        "movflags",
        "ndimage",
        "nyquist",
        "poroelastic",
        "pvbatch",
        "pvpython",
        "rcond",
        "regularised",
        "remesh",
        "remeshed",
        "remeshing",
        "rfft",
        "rfftfreq",
        "rprecondition",
        "slugification",
        "splu",
        "toarray",
        "tobytes",
        "tris",
        "undeformed",
        "unreachability",
        "unregularized",
        "unsmoothed",
        "viridis",
        "viscoelastic",
        "vmax",
        "vmin",
        "vtkhdf",
        "vtkmodules",
        "wspace",
        "xtick",
        "xticks",
        "xytext",
        "yscale",
        "ytick",
        "zorder"
    ]
}


You can also copy-paste megalinter-reports/LINTER_DEFAULT at the root of your repository

(Truncated to last 8000 characters out of 224212)
⚠️ COPYPASTE / jscpd - 1241 errors
ender-stable-neo-hookean-resolution-paraview.py [647:70 - 655:14] (9 lines, 70 tokens)
   exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/20-render-stable-neo-hookean-resolution-paraview.py [703:81 - 711:14]
Clone found (python)
 - exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/20-render-stable-neo-hookean-resolution-paraview.py [934:5 - 953:39] (20 lines, 108 tokens)
   exp/2026/08/24/unreachable-stable-neo-hookean-2d-resolution/src/25-render-stable-neo-hookean-resolution-analysis-paraview.py [217:5 - 236:39]
Clone found (python)
 - src/liblaf/apple/warp/fem/_arap.py [7:33 - 21:74] (15 lines, 63 tokens)
   src/liblaf/apple/warp/fem/_neo_hookean.py [7:41 - 21:74]
Clone found (python)
 - src/liblaf/apple/warp/fem/_arap.py [89:53 - 121:6] (33 lines, 187 tokens)
   src/liblaf/apple/warp/fem/_neo_hookean.py [118:55 - 150:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [116:50 - 125:50] (10 lines, 58 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [471:66 - 480:50]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [125:50 - 134:50] (10 lines, 58 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [480:66 - 489:50]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [134:50 - 143:53] (10 lines, 66 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [489:66 - 498:53]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [143:53 - 152:53] (10 lines, 66 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [498:69 - 507:53]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [166:40 - 172:70] (7 lines, 56 tokens)
   src/liblaf/apple/warp/fem/_base.py [189:37 - 195:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [166:31 - 172:70] (7 lines, 58 tokens)
   src/liblaf/apple/warp/fem/_base.py [211:31 - 217:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [166:40 - 173:54] (8 lines, 67 tokens)
   src/liblaf/apple/warp/fem/_base.py [235:36 - 242:71]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [167:9 - 172:70] (6 lines, 54 tokens)
   src/liblaf/apple/warp/fem/_base.py [266:9 - 271:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [191:13 - 197:19] (7 lines, 60 tokens)
   src/liblaf/apple/warp/fem/_base.py [237:13 - 243:22]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [262:14 - 269:67] (8 lines, 67 tokens)
   src/liblaf/apple/warp/fem/_base.py [292:14 - 299:67]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [296:9 - 302:70] (7 lines, 65 tokens)
   src/liblaf/apple/warp/fem/_base.py [327:9 - 333:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_koiter.py [140:6 - 168:32] (29 lines, 254 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [258:6 - 279:16]
Clone found (python)
 - src/liblaf/apple/warp/fem/_koiter.py [144:32 - 149:62] (6 lines, 68 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [163:28 - 168:62]
Clone found (python)
 - src/liblaf/apple/warp/fem/_koiter.py [158:17 - 170:33] (13 lines, 118 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [180:22 - 192:22]
Clone found (python)
 - src/liblaf/apple/warp/fem/_koiter.py [159:6 - 168:62] (10 lines, 100 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [220:6 - 229:62]
Clone found (python)
 - src/liblaf/apple/warp/fem/_koiter.py [190:53 - 195:11] (6 lines, 64 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [231:25 - 236:7]
Clone found (python)
 - src/liblaf/apple/warp/fem/_koiter.py [233:7 - 242:11] (10 lines, 111 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [271:7 - 280:9]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [1:1 - 28:15] (28 lines, 152 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [1:1 - 28:15]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [29:51 - 39:15] (11 lines, 66 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [29:58 - 39:15]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [39:44 - 60:15] (22 lines, 114 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [39:47 - 60:15]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [53:1 - 62:70] (10 lines, 96 tokens)
   src/liblaf/apple/warp/fem/_neo_hookean.py [74:78 - 83:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [53:11 - 62:70] (10 lines, 92 tokens)
   src/liblaf/apple/warp/fem/_neo_hookean.py [93:14 - 102:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [62:63 - 83:21] (22 lines, 150 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [62:22 - 83:29]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [83:63 - 102:21] (20 lines, 152 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [83:22 - 102:29]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [102:63 - 110:6] (9 lines, 55 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [102:22 - 110:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [110:17 - 150:6] (41 lines, 256 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [110:23 - 150:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [116:43 - 150:6] (35 lines, 216 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [135:10 - 169:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean.py [25:18 - 34:78] (10 lines, 83 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [27:18 - 36:78]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [21:28 - 26:7] (6 lines, 51 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [102:36 - 108:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [36:67 - 41:28] (6 lines, 52 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [57:1 - 62:28]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [36:35 - 45:18] (10 lines, 104 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [81:46 - 92:29]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [57:11 - 70:26] (14 lines, 98 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [103:14 - 115:35]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [86:14 - 94:12] (9 lines, 55 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [108:14 - 116:12]
┌────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash   │ 1              │ 38          │ 74           │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ csv    │ 103            │ 17919       │ 665083       │ 22           │ 2972 (16.59%)    │ 94530 (14.21%)    │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ python │ 283            │ 116285      │ 730954       │ 1219         │ 27903 (24.00%)   │ 193935 (26.53%)   │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ toml   │ 5              │ 919         │ 2340         │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total: │ 392            │ 135161      │ 1398451      │ 1241         │ 30875 (22.84%)   │ 288465 (20.63%)   │
└────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 1241 clones.
HTML report saved to megalinter-reports/copy-paste/jscpd-report.html
ERROR: jscpd found too many duplicates (22.8%) over threshold (0.0%)
time: 3.52s

(Truncated to last 8000 characters out of 293478)
⚠️ JSON / jsonlint - 1 error
File: exp/2026/06/17/human-face-smile-prestrain-v2/data/19-smoke-baseline-inverse-summary.json
Parse error on line 73, column 35:
..._displacement/max": NaN,      "initial_...
-----------------------^
No value found for key "initial_displacement/max"
⚠️ PYTHON / ruff - 424 errors
opyright notice at top of file
--> src/liblaf/apple/common/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/common/_moduli.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/common/_potential_name.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/common/attr_name.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/_builder.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/_forward.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/_model.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/_problem.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/dof_map/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/dof_map/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/dof_map/_builder.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/forward/dof_map/_dof_map.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/inverse/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/inverse/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/inverse/_diff_forward.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/element/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/element/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/element/_element.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/element/_tetra.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/geometry/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/geometry/_geometry.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/geometry/_tetra.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/geometry/_triangle.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/quadrature/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/quadrature/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/quadrature/_scheme.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/quadrature/_tetra.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/region/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/region/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/region/_region.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/utils/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/utils/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/utils/_decorator.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_arap.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_base.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_koiter.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_neo_hookean.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_stable_neo_hookean.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_deformation.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_gradient.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_hess_diag.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_hess_prod.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_hess_quad.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_identity.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_misc.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/utils/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/utils/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/utils/_material.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/math/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/math/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/math/_misc.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/math/_rotation.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/_adapter.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/_material.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/_model.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/_potential.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/potential/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/potential/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/potential/_ext_force.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/utils/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/utils/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/utils/_dtype.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/utils/_struct.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/common/test_moduli.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/forward/test_static_simulation.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/warp/test_koiter.py:1:1

Found 424 errors.
No fixes available (43 hidden fixes can be enabled with the `--unsafe-fixes` option).

(Truncated to last 8000 characters out of 83209)
⚠️ MARKDOWN / rumdl - 1 error
exp/2026/06/17/human-face-skin-prestrain/docs/30-lips-corners-down-volume-prestrain-rest-recovery.md:64:1: [MD060] Table columns should be aligned [fixed]
exp/2026/06/17/human-face-skin-prestrain/docs/30-lips-corners-down-volume-prestrain-rest-recovery.md:75:1: [MD060] Table columns should be aligned [fixed]
exp/2026/06/17/human-face-skin-prestrain/docs/30-lips-corners-down-volume-prestrain-rest-recovery.md:82:1: [MD060] Table columns should be aligned [fixed]
exp/2026/06/17/human-face-skin-prestrain/docs/31-uniform-5pct-isface-volume-prestrain-rest-recovery.md:53:1: [MD060] Table columns should be aligned [fixed]
exp/2026/06/17/human-face-skin-prestrain/docs/31-uniform-5pct-isface-volume-prestrain-rest-recovery.md:60:1: [MD060] Table columns should be aligned [fixed]
exp/2026/06/17/human-face-skin-prestrain/docs/31-uniform-5pct-isface-volume-prestrain-rest-recovery.md:71:1: [MD060] Table columns should be aligned [fixed]
exp/2026/06/17/human-face-skin-prestrain/docs/31-uniform-5pct-isface-volume-prestrain-rest-recovery.md:79:1: [MD060] Table columns should be aligned [fixed]
exp/2026/06/17/human-face-skin-prestrain/docs/32-uniform-5pct-isface-boundary-pullback-rest-recovery.md:60:1: [MD060] Table columns should be aligned [fixed]
exp/2026/06/17/human-face-skin-prestrain/docs/32-uniform-5pct-isface-boundary-pullback-rest-recovery.md:70:1: [MD060] Table columns should be aligned [fixed]
exp/2026/05/20/inverse-face/docs/40-transfer-activation-matrix.md:32:1: [MD060] Table columns should be aligned [fixed]
[inline config warning] exp/2026/08/17/human-face-smile-material-heuristic-sweep/docs/20-material-screen-findings.md:93: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/17/human-face-smile-material-heuristic-sweep/docs/20-material-screen-findings.md:124: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/17/human-face-smile-material-heuristic-sweep/docs/20-material-screen-findings.md:230: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/17/human-face-smile-material-heuristic-sweep/docs/20-material-screen-findings.md:258: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
exp/2026/08/18/human-face-smile-plane-stress-skin/docs/00-plane-stress-preflight.md:132:1: [MD057] Relative link '../tmp/preflight/skin-domain-overlay.png' does not exist
exp/2026/08/18/human-face-smile-plane-stress-skin/docs/00-plane-stress-preflight.md:315:21: [MD057] Relative link '../data/10-corrected-baseline/skin-isface-e0200-p000.vtp' does not exist
[inline config warning] exp/2026/08/18/human-face-smile-plane-stress-skin/docs/15-forward-domain-conversion-probe.md:71: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/18/human-face-smile-plane-stress-skin/docs/15-forward-domain-conversion-probe.md:157: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/18/human-face-smile-plane-stress-skin/docs/15-forward-domain-conversion-probe.md:178: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/18/human-face-smile-plane-stress-skin/docs/15-forward-domain-conversion-probe.md:194: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
exp/2026/08/19/human-face-smile-selective-skin-energy-prestrain-inverse/docs/40-selective-skin-prestrain-inverse-findings.md:156:41: [MD057] Relative link '../tmp/20-selective-skin-prestrain-smoke/' does not exist
exp/2026/08/19/human-face-smile-selective-skin-energy-prestrain-inverse/docs/40-selective-skin-prestrain-inverse-findings.md:158:44: [MD057] Relative link '../tmp/20-selective-skin-prestrain-smoke-v2/' does not exist
exp/2026/08/19/human-face-smile-selective-skin-energy-prestrain-inverse/docs/40-selective-skin-prestrain-inverse-findings.md:182:43: [MD057] Relative link '../logs/20-inverse-selective-skin-prestrain.log' does not exist
exp/2026/08/17/human-face-smile-material-heuristic-sweep/docs/20-material-screen-findings.md:369:46: [MD057] Relative link '../logs/30-analyze-material-screen.log' does not exist
[inline config warning] exp/2026/08/18/human-face-smile-exaggerated-material-screen/docs/10-exaggerated-material-screen.md:93: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/18/human-face-smile-exaggerated-material-screen/docs/10-exaggerated-material-screen.md:134: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/18/human-face-smile-exaggerated-material-screen/docs/10-exaggerated-material-screen.md:220: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/18/human-face-smile-exaggerated-material-screen/docs/10-exaggerated-material-screen.md:234: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/18/human-face-smile-exaggerated-material-screen/docs/10-exaggerated-material-screen.md:261: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
exp/2026/08/18/human-face-smile-plane-stress-skin/docs/15-forward-domain-conversion-probe.md:130:10: [MD057] Relative link '../logs/15-forward-domain-conversion-probe.log' does not exist
exp/2026/08/18/human-face-smile-plane-stress-skin/docs/15-forward-domain-conversion-probe.md:131:10: [MD057] Relative link '../logs/16-analyze-domain-conversion-probe.log' does not exist
exp/2026/08/18/human-face-smile-plane-stress-skin/docs/20-hard-fixed-zero-step-smoke.md:40:25: [MD057] Relative link '../data/10-corrected-baseline/skin-isface-e0200-p000.vtp' does not exist
exp/2026/08/18/human-face-smile-plane-stress-skin/docs/20-hard-fixed-zero-step-smoke.md:99:31: [MD057] Relative link '../tmp/hard-fixed-smoke-v3/20-corrected-baseline-hard-fixed-smoke-summary.json' does not exist
[inline config warning] exp/2026/08/18/human-face-smile-plane-stress-skin/docs/30-corrected-baseline-screen.md:53: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
[inline config warning] exp/2026/08/18/human-face-smile-plane-stress-skin/docs/30-corrected-baseline-screen.md:120: Rule MD013 is not enabled in configuration, so the inline enable comment enabling it has no effect
exp/2026/08/19/material-physics-group-meeting-assets/docs/10-lame-assets.md:107:13: [MD057] Relative link '../logs/10-lame-run.log' does not exist
exp/2026/08/19/human-face-smile-selective-skin-energy-prestrain-inverse/data/10-prepared-material-cases-table.md:2:1: [MD060] Table columns should be aligned [fixed]
exp/2026/08/19/human-face-smile-fat-floor-skin-energy-prestrain-inverse/data/10-prepared-material-cases-table.md:2:1: [MD060] Table columns should be aligned [fixed]
exp/2026/08/19/human-face-smile-fat-floor-skin-energy-prestrain-inverse/data/10-prepared-material-cases-v2-table.md:2:1: [MD060] Table columns should be aligned [fixed]
exp/2026/08/19/human-face-smile-fixed-activation-prestrain-replay/docs/20-fixed-activation-prestrain-replay-findings.md:125:26: [MD057] Relative link '../logs/10-fixed-activation-prestrain-replay.log' does not exist
exp/2026/08/19/human-face-smile-fixed-activation-prestrain-replay/docs/20-fixed-activation-prestrain-replay-findings.md:126:16: [MD057] Relative link '../logs/20-analyze-fixed-activation-prestrain-replay.log' does not exist

Fixed: Fixed 13/26 issues in 7 files (201ms)

Notices

⚠️ Your configuration references items that have been removed from MegaLinter and are ignored: GIT. See Removed linters to find their replacements.

See detailed reports in MegaLinter artifacts

MegaLinter is provided by OX Security
Show us your support by starring ⭐ the repository

liblaf-approve[bot]
liblaf-approve Bot previously approved these changes Aug 9, 2026
liblaf-approve[bot]
liblaf-approve Bot previously approved these changes Aug 23, 2026
liblaf-approve[bot]
liblaf-approve Bot previously approved these changes Aug 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automerge Merge the pull request once unit tests and other checks pass. release-please

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant